<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>查找重复元素</title>
	</head>
	<body>
		<h4>题目描述</h4>
		<p>找出数组 arr 中重复出现过的元素</p>
		<span>duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()</span>
		<script type="text/javascript">
			//filter方法
			function duplicates(arr) {
				var arr2=[];
				return arr.filter(function(item,index,arr){
					return arr2=arr.indexOf(item) != index; //过滤单个元素
				}).filter(function(item,index,arr2){
					return arr2.indexOf(item)==index;  //过滤重复元素
				})
			}
			function duplicates(arr){
				return arr.filter(function(item,index){
					return arr.lastIndexOf(item) != index &&arr.indexOf(item)===index;
				})
			}
			//先排序，后查重 push方法
			function duplicates(arr){
				//声明一个临时数组
    			var temp = [];
    			//对数组进行排序，方便后续查重对比
    			arr.sort();
    			//遍历数组
    			for (var i = 0; i < arr.length; i++) {
    			//对比数组元素，如果该元素与后一个元素一样，并且与前一个元素不一样，
        		//则将该元素放到临时数组中
	        		if (arr[i] == arr[i+1] && arr[i] != arr[i-1]){
	                	temp.push(arr[i]);
	    			}
	        	}
    			return temp;
			}
			//indexof+push方法
			function duplicates2(arr){
				var arr2=[];
				len = arr.length;
				for(var i=0;i<len;i++){
					for(var j=i+1;j<len;j++){
						if(arr[i] == arr[j]){
							if(arr2.indexOf(arr[i])==-1)
							arr2.push(arr[i]);
						}
					}
				}
				return arr2
			}
			duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]);
			console.log(duplicates2([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort())
		</script>
	</body>
</html>
